Ext.namespace('pages.p2p.sysnotices.query');

pages.p2p.sysnotices.query.Main = function(config) {
	Ext.apply(this, config);
	this.initUIComponents();
	pages.p2p.sysnotices.query.Main.superclass.constructor.call(this);
};

Ext.extend(pages.p2p.sysnotices.query.Main, Ext.Panel, {
			/**
			 * 构造函数
			 */
			initUIComponents : function() {

				this.queryForm = new Ext.form.FormPanel({
							layout : 'column',
							region : 'north',
							labelWidth : 100,
							labelAlign : 'right',
							autoHeight : true,
							border : false,
							frame : false,
							items : [{
										columnWidth : 1,
										height : 10,
										border : false
									}, {
										columnWidth : .25,
										layout : 'form',
										border : false,
										items : [{
													fieldLabel : '录入开始时间',
													name : 'START_DATE',
													id : 'START_DATE',
													anchor : '96%',
													format : 'Y-m-d',
													xtype : 'datefield'
												}]
									}, {
										columnWidth : .25,
										layout : 'form',
										border : false,
										items : [{
													fieldLabel : '录入结束时间',
													name : 'END_DATE',
													id : 'END_DATE',
													anchor : '96%',
													format : 'Y-m-d',
													xtype : 'datefield'
												}]
									}, {
										columnWidth : .25,
										layout : 'form',
										border : false,
										items : [{
													fieldLabel : '标题',
													name : 'TITLE',
													id : 'TITLE',
													anchor : '96%',
													xtype : 'textfield'
												}]
									}]
						});
				this.store = new Ext.data.Store({
							proxy : new Ext.data.HttpProxy({
										url : ExtJ
												.getActionPath('sys/querysysinfo.do')
									}),
							remoteSort : true,
							reader : new Ext.data.JsonReader({
										root : 'data',
										totalProperty : 'total',
										id : 'ID'
									}, [{
												name : 'ID',
												mapping : 'ID'
											}, {
												name : 'TITLE',
												mapping : 'TITLE'
											}, {
												name : 'AUTHOR',
												mapping : 'AUTHOR'
											}, {
												name : 'ABSTRACT',
												mapping : 'ABSTRACT'
											}, {
												name : 'TEXT_HTML',
												mapping : 'TEXT_HTML'
											}, {
												name : 'SHOW_DATE',
												mapping : 'SHOW_DATE'
											}, {
												name : 'OPER_USERID',
												mapping : 'OPER_USERID'
											}, {
												name : 'CREATE_DATE',
												mapping : 'CREATE_DATE'
											}, {
												name : 'ISPUBLIC',
												mapping : 'ISPUBLIC'
											}])
						});

				var sm = new Ext.grid.CheckboxSelectionModel({
							singleSelect : true,
							listeners : {
								'rowselect' : function(sm, rowIndex, record) {
									var ispub = record.get("ISPUBLIC");
									if ('0' == ispub) {
										Ext.getCmp('pub').setDisabled(false);
										Ext.getCmp('delete').setDisabled(true);
									} else if ('1' == ispub) {
										Ext.getCmp('pub').setDisabled(true);
										Ext.getCmp('delete').setDisabled(false);
									}
								}
							}
						});
				var cm = new Ext.grid.ColumnModel([sm,
						new Ext.grid.RowNumberer(), {
							header : '标题',
							width : 300,
							sortable : true,
							dataIndex : 'TITLE'
						}, {
							header : '作者',
							width : 80,
							sortable : true,
							dataIndex : 'AUTHOR'
						}, {
							header : '摘要',
							width : 150,
							sortable : true,
							dataIndex : 'ABSTRACT'
						}, {
							header : '发布时间',
							width : 120,
							sortable : true,
							dataIndex : 'SHOW_DATE'
						}, {
							header : '是否发布',
							width : 100,
							sortable : true,
							dataIndex : 'ISPUBLIC',
							renderer : function(v) {
								if ('1' == v) {
									return '是';
								} else {
									return '否';
								}
							}
						}, {
							header : '录入人用户名',
							width : 100,
							sortable : true,
							dataIndex : 'OPER_USERID'
						}, {
							header : '录入时间',
							width : 120,
							sortable : true,
							dataIndex : 'CREATE_DATE'
						}]);

				/**
				 * GridPanel
				 */
				this.grid = new Ext.grid.GridPanel({
							id : 'grid',
							region : 'center',
							store : this.store,
							border : true,
							frame : false,
							viewConfig : {
								autoFill : false,
								forceFit : false,
								focusRow : function() {
									return;
								},
								getRowClass : function(record, rowIndex,
										rowParams, store) {
									if (record.get("TOP_LEVEL") == "1") {
										return 'ux-grid-record-onTop';
									}
								}
							},
							sm : sm,
							cm : cm,
							tbar : [{
										id : 'query',
										iconCls : 'query',
										text : '查询',
										handler : this.onQuery
												.createDelegate(this)
									}, '-', {
										id : 'reset',
										iconCls : 'reset',
										text : '重置',
										handler : this.onReset
												.createDelegate(this)
									}, '-', {
										id : 'add',
										iconCls : 'add',
										text : '新增',
										handler : this.onAdd
												.createDelegate(this)
									}, '-', {
										id : 'view',
										iconCls : 'view',
										text : '预览',
										handler : this.onView
												.createDelegate(this)
									}, '-', {
										id : 'update',
										iconCls : 'update',
										text : '修改',
										handler : this.onUpdate
												.createDelegate(this)
									}, '-', {
										id : 'pub',
										iconCls : 'Applicationgo',
										text : '发布',
										handler : this.onPublic
												.createDelegate(this)
									}, '-', {
										id : 'delete',
										iconCls : 'delete',
										text : '回收公告',
										handler : this.onDelete
												.createDelegate(this)
									}],
							bbar : new Ext.PagingToolbar({
										pageSize : pageSize,
										store : this.store,
										displayInfo : true,
										displayMsg : '当前显示第 {0} - {1} 条 / 共 {2} 条',
										emptyMsg : "没有记录"
									})
						});

				Ext.apply(this, {
							title : '系统公告',
							closeAction : 'close',
							layout : 'border',
							border : false,
							tools : [{
								id : 'help',
								handler : function(){
									this.onHelp();				
								}.createDelegate(this)
							}],
							listeners : {
								'render' : this.initData.createDelegate(this)
							},
							items : [this.queryForm, this.grid]
						})
			},
			
			onHelp : function(){
				var dialog = new global.help.HelpWindow({key : 'gg.all.helpsysnotices'});
				dialog.show();
			},
			
			initData : function() {
				this.onQuery();
			},
			onQuery : function() {
				this.store.baseParams.startDate = Ext.getCmp('START_DATE')
						.getRawValue();
				this.store.baseParams.endDate = Ext.getCmp('END_DATE')
						.getRawValue();
				this.store.baseParams.title = Ext.getCmp('TITLE').getValue();
				var startDate = this.store.baseParams.startDate;
				var endDate = this.store.baseParams.endDate;
				if (startDate > endDate) {
					Ext.Msg.alert('提示', '开始时间不能大于结束时间!');
					return;
				}
				Ext.getBody().mask("正在查询,请稍候...");
				this.store.reload({
							params : {
								start : 0,
								limit : pageSize
							},
							callback : function() {
								Ext.getBody().unmask(true);
							}
						});
			},

			onReset : function() {
				this.queryForm.getForm().reset();
			},

			onAdd : function() {
				var win = new pages.p2p.sysnotices.add.Add({
							operType : 'add'
						});
				win.show();
			},
			onUpdate : function() {
				var record = this.grid.getSelectionModel().getSelected();
				if (!record) {
					ExtJ.showMessage("请选择一条需要修改的记录!");
					return;
				}
				var win = new pages.p2p.sysnotices.update.Update({
							operType : 'update',
							record : record
						});
				win.show();
			},
			onView : function() {
				var record = this.grid.getSelectionModel().getSelected();
				if (!record) {
					ExtJ.showMessage("请选择一条记录!");
					return;
				}
				var id = record.get('ID');
				if ('http://localhost:9090/FM' == baseUrl) {
					window
							.open("http://localhost:8080/p2p/sysnotice.action?id="
									+ id);
				} else if ('http://192.168.2.180:9090/FM' == baseUrl) {
					window
							.open("http://192.168.2.180:9090/p2p/sysnotice.action?id="
									+ id);
				} else if ('http://hongdianyidai.com/FM' == baseUrl) {
					window
							.open("http://hongdianyidai.com/p2p/sysnotice.action?id="
									+ id);
				} else {
					window.open(String(baseUrl).substring(0,
							String(baseUrl).length - 2)
							+ "p2p/sysnotice.action?id=" + id);
				}
			},
			onPublic : function() {
				var record = this.grid.getSelectionModel().getSelected();
				if (!record) {
					ExtJ.showMessage("请选择一条记录!");
					return;
				}
				Ext.Msg.confirm('确认框', '确认要发布吗?', function(btn) {
							if ('no' == btn) {
								return;
							}
							var id = record.get('ID');
							Ext.getBody().mask("正在发布,请稍候...");
							Ext.Ajax.request({
										url : baseUrl
												+ '/sys/publicSysNotice.do',
										params : {
											id : id,
											ispub : 1
										},
										success : function(result) {
											var text = Ext
													.decode(result.responseText);
											if (text.isSuc) {
												Ext.getCmp('grid').getStore()
														.reload();
												Ext.Msg.alert('提示', '发布成功!');
											} else {
												Ext.Msg.alert('提示', '发布失败!');
											}
											Ext.getBody().unmask(true);
										},
										failure : function() {
											Ext.Msg.alert('提示', '网络异常,请重新操作');
											Ext.getBody().unmask(true);
										}
									});
						});

			},
			onDelete : function() {
				var record = this.grid.getSelectionModel().getSelected();
				if (!record) {
					ExtJ.showMessage("请选择一条记录!");
					return;
				}
				Ext.Msg.confirm('确认框', '确认要回收吗?', function(btn) {
							if ('no' == btn) {
								return;
							}
							var id = record.get('ID');
							Ext.getBody().mask("正在收回公告,请稍候...");
							Ext.Ajax.request({
										url : baseUrl
												+ '/sys/publicSysNotice.do',
										params : {
											id : id,
											ispub : 0
										},
										success : function(result) {
											var text = Ext
													.decode(result.responseText);
											if (text.isSuc) {
												Ext.getCmp('grid').getStore()
														.reload();
												Ext.Msg.alert('提示', '收回公告成功!');
											} else {
												Ext.Msg.alert('提示', '收回公告失败!');
											}
											Ext.getBody().unmask(true);
										},
										failure : function() {
											Ext.Msg.alert('提示', '网络异常,请重新操作');
											Ext.getBody().unmask(true);
										}
									});
						});

			}

		});